// 题目要求不使用乘法，除法和 mod 运算符，那么我们可以使用减法不断逼近 divisor,
// 同时用计数器记录，当 dividend 递减至小于 divisor 的树时，累加器的值就是除法的结果
// 至于正负号我们可以使用字符串拼接来解决

var divide = function (dividend, divisor) {
  if (!divisor) return;
  if (divisor === 1) return dividend;
  if (divisor === -1 && dividend === (-2) ** 31) return 2 ** 31 - 1; // 处理特殊值

  let res = 0;
  let flag = "";
  if ((dividend < 0 && divisor > 0) || (dividend > 0 && divisor < 0)) {
    flag = "-"; // 符号
  }
  dividend = Math.abs(dividend); // 取绝对值
  divisor = Math.abs(divisor);

  while (dividend >= divisor) {
    dividend -= divisor; // 累减，计数器不断更新
    res++;
  }

  return parseInt(flag + res); // 转化成结果
};
